﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Diagnostics.Contracts;

namespace AnnotateMe.Interfaces
{
    /// <summary>
    /// Service that lays out given annotation rectangles and their connectors in a nice way.
    /// </summary>
    [ContractClass(typeof(LayoutServiceContract))]
    public interface ILayoutService
    {
        /// <summary>
        /// Method that lays out possibly annotated blocks.
        /// </summary>
        /// <param name="possiblyAnnotatedBlocks">Blocks with optional annotations to arrange.</param>
        /// <returns>Shapes representing the arranged blocks.</returns>
        CompositeShape Arrange(IList<PossiblyAnnotatedBlock> possiblyAnnotatedBlocks);
    }
}
